<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 函数名直接调用
        function log() {
            console.log('this指向谁?', this)
        }
        // log()
        // window.log()

        // 2. 函数添加给某个对象，哪个对象调用，this就指向对应的对象
        const obj = {
                eat() {
                    console.log(this)
                }
            }
            // obj.eat()

        // 3. 通过new 关键字 执行函数，函数被当作构造函数处理，对应的this指向实例对象
        function Person() {
            console.log(this)
        }
        // new Person()

        // 4. 箭头函数没有this，使用的this实际是上下文中的this
        const obj2 = {
                run: () => {
                    console.log(this)
                }
            }
            // obj2.run()
    </script>
</body>

</html>